﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using produccion.clases;
using System.Data;
using System.ComponentModel;
using System.IO;
using System.Diagnostics;

namespace produccion.forms
{
    /// <summary>
    /// Lógica de interacción para frmActOrd.xaml
    /// </summary>
    public partial class frmActOrd : Window
    {
        CLSENCORDP EncOrd = new CLSENCORDP();
        CLSDETORDP DetOrd = new CLSDETORDP();
        CLSMAEREFP MaeRefp = new CLSMAEREFP();
        CLSMAEREF MaeRef = new CLSMAEREF();
        CLSMAECOLP MaeColp = new CLSMAECOLP();
        CLSMAECLIP MaeClip = new CLSMAECLIP();
        CLSENCPPCP EncPpcp = new CLSENCPPCP();
        CLSDETPPCP DetPpcp = new CLSDETPPCP();
        CLSMAEPRO MaePro = new CLSMAEPRO();
        CLSENCPRCP EncPrcp = new CLSENCPRCP();
        
        DataTable dtOrd = new DataTable();
        DataTable dtDetalle = new DataTable();
        bool YaEsta = false;
        Boolean BooExisteElDato;

        MDOgeneral MdoGeneral = new MDOgeneral();
        CLSMAECOL MaeCol = new CLSMAECOL();

        String StrLineaAEjecutarEnCmd;//FJRF - Linea a ejecutar en el Cmd
        String StrCodigoPrimerColorReferencia;//FJRF - Esta variable se usa para guardar el primer color que tenga la imagen por si hay mas colores y no tiene imagen poner esta

        #region Variables para el informe Administrar ordenes
            MDOgeneral mod = new MDOgeneral();//FJRF - Creamos una instancia de la clase para hacer una consulta

            //FJRF - Creamos la tabla que contendra el encabezado del de las tallas
            DataTable dtEncabezadoTallas;
            DataRow drEncabezadoTallas;
            //FJRF - Creamos la tabla que contendra el detalle del de las tallas
            DataTable dtDetalleTallas;
            DataRow drDetalleTallas;
            //FJRF - Creamos el total de las tallas
            DataTable dtTotalTallas;
            DataRow drtotalTallas;
            //FJRF - Creamos la informacion donde estan guardados los datos del detalle
            DataTable dtDetalleMateriasPrimas;
            DataTable dtCortadoresOrdenProduccion;
            //FJRF - Datos del sub cliente
            String StrSubClienteCodigo, StrSubClienteNombre;
        #endregion

        public frmActOrd()
        {
            InitializeComponent();
        }

        private void btnSalir_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        private void btnGrabar_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (txtCodCli.Text == "")
                {
                    MessageBox.Show("Debe seleccionar un cliente", "Grabar orden", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
                if (txtOrden.Text=="")
                {
                    MessageBox.Show("Debe seleccionar un tipo de orden", "Grabar orden", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
                if (txtCodRef.Text == "")
                {
                    MessageBox.Show("Debe seleccionar una referencia", "Grabar orden", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
                if (cbColor.SelectedItem.ToString() == "")
                {
                    MessageBox.Show("Debe seleccionar un color de referencia", "Grabar orden", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
                bool Encontro = false;
                for (int i = 1; i < dtOrd.Columns.Count; i++)
                {
                    if (!dtOrd.Rows[1][i].Equals("") && !dtOrd.Rows[1][i].Equals(0))
                    {
                        Encontro = true;
                    }
                }
                if (Encontro == false)
                {
                    MessageBox.Show("Debe seleccionar un color de referencia", "Grabar orden", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
                MDOgeneral.transaccion = MDOgeneral.conexion.BeginTransaction();
                if (rbDevolucion.IsChecked == true)
                {
                    txtOrden.Text = EncOrd.Consecutivo("D");
                }

                if (rbGarantia.IsChecked == true)
                {
                    txtOrden.Text = EncOrd.Consecutivo("G");
                }

                if (rbProduccion.IsChecked == true)
                {
                    txtOrden.Text = EncOrd.Consecutivo("P");
                }

                if (rbReconocidos.IsChecked == true)
                {
                    txtOrden.Text = EncOrd.Consecutivo("C");
                }

                if (rbReparacion.IsChecked == true)
                {
                    txtOrden.Text = EncOrd.Consecutivo("R");
                }
                EncOrd.NROORD_EOP = txtOrden.Text;
                EncOrd.FECORD_EOP = System.Convert.ToDateTime( dtpFecha.Text);
                EncOrd.CODCLI_EOP = txtCodCli.Text;
                if (txtPedido.Text == "")
                    EncOrd.NROPED_EOP = 0;
                else
                    EncOrd.NROPED_EOP = System.Convert.ToInt16(txtPedido.Text);
                EncOrd.CODREF_EOP = txtCodRef.Text;
                EncOrd.CODCOL_EOP = MdoGeneral.PasarCadenaYRetornarCodigoONombre(cbColor.SelectedItem.ToString(),"-","Codigo");
                EncOrd.CODHOR_EOP = " ";
                EncOrd.CODCOR1_EOP = " ";
                EncOrd.PORCOR1_EOP = 0;
                if (EncOrd.existe())
                {
                    EncOrd.actualizar();
                }
                else
                {
                    EncOrd.ESTADO_EOP = "P";
                    EncOrd.TIPORD_EOP = txtOrden.Text.Substring(0, 1);
                    EncOrd.insertar();
                }
                for (int i = 1; i < dtOrd.Columns.Count; i++)
                {
                    DetOrd.NROORD_DOP = txtOrden.Text;
                    DetOrd.CODREF_DOP = txtCodRef.Text;
                    DetOrd.CODCOL_DOP = MdoGeneral.PasarCadenaYRetornarCodigoONombre(cbColor.SelectedItem.ToString(), "-", "Codigo");
                    DetOrd.CODTAL_DOP = dgOrd.Columns[i].Header.ToString();
                    if (dtOrd.Rows[1][i].ToString() != "" && !dtOrd.Rows[1][i].Equals(0))
                    {
                        if (DetOrd.existe())
                        {
                            DetOrd.CANORD_DOP = System.Convert.ToInt32(dtOrd.Rows[1][i].ToString());
                            DetOrd.CANCOR_DOP = 0;
                            DetOrd.CANDES_DOP = 0;
                            DetOrd.CANGUA_DOP = 0;
                            DetOrd.CANMON_DOP = 0;
                            DetOrd.CANPRG_DOP = 0;
                            DetOrd.CANPRP_DOP = 0;    
                            DetOrd.actualizar();
                        }
                        else
                        {
                            DetOrd.CANORD_DOP = System.Convert.ToInt32(dtOrd.Rows[1][i].ToString());
                            DetOrd.CANCOR_DOP = 0;
                            DetOrd.CANDES_DOP = 0;
                            DetOrd.CANGUA_DOP = 0;
                            DetOrd.CANMON_DOP = 0;
                            DetOrd.CANPRG_DOP = 0;
                            DetOrd.CANPRP_DOP = 0;
                            DetOrd.insertar();
                        }
                    }
                }
                MDOgeneral.transaccion.Commit();
                txtOrden.Text = "";
                LimpiarControles();
            }
            catch (Exception ex)
            {
                MDOgeneral.transaccion.Rollback();
                MessageBox.Show(ex.Message, "Error al grabar", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }

        private void btnNuevo_Click(object sender, RoutedEventArgs e)
        {
            LimpiarControles();
            txtOrden.Text = "";
            Keyboard.Focus(txtOrden);
            YaEsta = false;
            dgOrd.IsReadOnly = false;
        }

        private void btnBuscarCli_Click(object sender, RoutedEventArgs e)
        {
            FRMbuscar frm = new FRMbuscar(MaeClip, "buscar", "Codigo", "NOMCLI_CLI", "Codigo");
            frm.ShowDialog();
            txtCodCli.Text = frm.retorno;
        }

        private void btnBuscarPed_Click(object sender, RoutedEventArgs e)
        {
           
        }

        private void btnBuscarRef_Click(object sender, RoutedEventArgs e)
        {
            FRMBuscarCol frm = new FRMBuscarCol();
            frm.EsReferencia = true;
            frm.RequiereColor = false;
            frm.ShowDialog();
            if (!String.IsNullOrEmpty(frm.Retorno))
                txtCodRef.Text = frm.Retorno.Substring(0,4);
        }

        private void txtCodCli_TextChanged(object sender, TextChangedEventArgs e)
        {
            txtNomCli.Text = "";
            cbSubCli.Items.Clear();            
        }

        private void txtCodCli_KeyDown(object sender, KeyEventArgs e)
        {
            DataTable dt = new DataTable();
            if (e.Key == Key.Enter)
            {
                PrivV_BuscarSubCliente(txtCodCli.Text);//FJRF - Se busca el sub cliente
            }
        }
        private void PrivV_BuscarSubCliente(string StrCodigoCliente)
        {
            DataTable dt = new DataTable();
            if (StrCodigoCliente == "") return;

            MaeClip.CODCLI_CLI = StrCodigoCliente;

            StrSubClienteCodigo = "";
            StrSubClienteNombre = "";

            if (MaeClip.existe())
            {
                Boolean BooHayDatos = false;

                MaeClip.consultar();
                txtNomCli.Text = MaeClip.NOMCLI_CLI;
                dt = MaeClip.ClientesSec();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    BooHayDatos = true;
                    cbSubCli.Items.Add(dt.Rows[i][0].ToString() + "-" + dt.Rows[i][1].ToString());
                    cbSubCli.SelectedIndex = 0;

                    StrSubClienteCodigo = dt.Rows[i][0].ToString();
                    StrSubClienteNombre = dt.Rows[i][1].ToString();
                }
                if (BooHayDatos == false)
                {
                    cbSubCli.Items.Add(txtCodCli.Text.Trim() + "-" + txtNomCli.Text.Trim());
                    cbSubCli.SelectedIndex = 0;

                    StrSubClienteCodigo = txtCodCli.Text.Trim();
                    StrSubClienteNombre = txtNomCli.Text.Trim();
                }
            }
            else
            {
                txtCodCli.Text = "";
            }
        }
        private void LimpiarControles()
        {
            txtCodCli.Text = "";
            txtNomCli.Text = "";
            dtpFecha.Text = DateTime.Now.ToShortDateString();
            cbSubCli.Items.Clear();
            txtPedido.Text = "";
            txtCodRef.Text = "";
            cbColor.Items.Clear();
            dgOrd.ItemsSource = null;
            dgDetalle.ItemsSource = null;
            dtOrd.Clear();
            dtDetalle.Clear();
            FormatoDt();
            dgOrd.ItemsSource = dtOrd.DefaultView;
            btnGrabar.IsEnabled = true;
            btnEliminar.IsEnabled = true;
            YaEsta = false;
            dgOrd.IsReadOnly = false;

            BooExisteElDato = false;
            BtnImprimirPlano.IsEnabled = false;

            rbProduccion.IsChecked = false;
            rbReparacion.IsChecked = false;
            rbReconocidos.IsChecked = false;
            rbDevolucion.IsChecked = false;
            rbGarantia.IsChecked = false;
        }

        private void FormatoDt()
        {
            dtOrd.Rows.Clear();
            dtOrd.Columns.Clear();
            dtOrd.Clear();
            dtOrd.Columns.Add(new DataColumn("Seccion-Pedido", System.Type.GetType("System.String")));
            DataRow dr = dtOrd.NewRow();
            
            dr[0] = "Por programar";
            dtOrd.Rows.Add(dr);
            dr = dtOrd.NewRow();

            dr[0] = "Cantidad";
            dtOrd.Rows.Add(dr);
            dr = dtOrd.NewRow();

            dr[0] = "Programación";
            dtOrd.Rows.Add(dr);
            dr = dtOrd.NewRow();

            dr[0] = "Preparacion";//FJRF - Se crea el titulo 
            dtOrd.Rows.Add(dr);//FJRF - Se agrega guarnecida
            dr = dtOrd.NewRow();//FJRF - Se agrega guarnecida

            dr[0] = "Corte";
            dtOrd.Rows.Add(dr);
            dr = dtOrd.NewRow();

            dr[0] = "Guarnecida";
            dtOrd.Rows.Add(dr);
            dr = dtOrd.NewRow();

            dr[0] = "Montaje";
            dtOrd.Rows.Add(dr);
            dr = dtOrd.NewRow();

            dr[0] = "Despachos";
            dtOrd.Rows.Add(dr);
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            LimpiarControles();
            dgOrd.ItemsSource = dtOrd.DefaultView;
            Keyboard.Focus(txtOrden);
        }

        private void txtPedido_KeyDown(object sender, KeyEventArgs e)
        {
            if (txtPedido.Text == "") return;
            if (e.Key == Key.Return)
            {
                if (EncPpcp.Existe(txtCodCli.Text, System.Convert.ToInt64(txtPedido.Text)).Equals(false))
                {
                    MessageBox.Show("El pedido no existe para este cliente!", "Administrar órdenes", MessageBoxButton.OK, MessageBoxImage.Hand);
                    txtPedido.Text = "";
                }
            }
        }

        private void txtCodRef_KeyDown(object sender, KeyEventArgs e)
        {
            DataTable dt = new DataTable();
            if (txtCodRef.Text == "") return;

            Boolean BooExisteColorReferencia = false;//FJRF - Variable que identifica si existe un color para la referencia

            MaeRefp.CODREF_REF = txtCodRef.Text;
            if (MaeRefp.existe())
            {
                MaeRef.CODREF_REF = txtCodRef.Text;
                if (MaeRef.ExisteReferencia())
                {
                    MaeRef.Consultar();
                    MaePro.CODREF_PRO = txtCodRef.Text;
                    txtNomRef.Text = MaeRef.NOMREF_REF;
                    dt = MaePro.BuscarColor();

                    PonerImagen(MaePro.CODREF_PRO, "", txtNomRef.Text);

                    if (dt.Rows.Count == 0)
                    {
                        MessageBox.Show("La referencia no tiene colores disponibles!", "Estándares", MessageBoxButton.OK, MessageBoxImage.Asterisk);
                        txtCodRef.Text = "";
                        return;
                    }
                    cbColor.Items.Clear();
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        cbColor.Items.Add(dt.Rows[i][0].ToString() + "-" + dt.Rows[i][1].ToString());
                        BooExisteColorReferencia = true;
                    }
                }
                else
                {
                    txtCodRef.Text = "";                    
                }

                if (BooExisteColorReferencia == true)
                {
                    cbColor.SelectedIndex = 0;
                    string strCodigoColor = "";
                    strCodigoColor = MdoGeneral.PasarCadenaYRetornarCodigoONombre(cbColor.Text, "-", "Codigo");
                    PonerImagen(MaePro.CODREF_PRO, strCodigoColor, txtNomRef.Text);
                }
            }

            if (txtPedido.Text != "" && txtCodRef.Text.Length==4 && cbColor.SelectedItem!=null)
            {
                if (!DetPpcp.Existe(txtCodCli.Text, System.Convert.ToInt64(txtPedido.Text), txtCodRef.Text, MdoGeneral.PasarCadenaYRetornarCodigoONombre(cbColor.SelectedItem.ToString(),"-","Codigo"),""))
                {
                    MessageBox.Show("No existe la referencia para este pedido", "Órdenes", MessageBoxButton.OK, MessageBoxImage.Hand);
                    txtCodRef.Text = "";
                }
            }
        }

        private void txtCodRef_TextChanged(object sender, TextChangedEventArgs e)
        {
            txtNomRef.Text = "";
            cbColor.Items.Clear();
            FormatoDt();
            dgOrd.ItemsSource = null;
            dgOrd.ItemsSource = dtOrd.DefaultView;
        }

        private void txtOrden_TextChanged(object sender, TextChangedEventArgs e)
        {
            LimpiarControles();
        }

        private void txtOrden_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
            if (e.Key == Key.Return)
            {
                PubV_BuscarOrden(txtOrden.Text);//FJRF - Buscamos la orden
            }
        }
        public void PubV_BuscarOrden(String StrNumeroDeOrden)
        {
            BooExisteElDato = false;
            BtnImprimirPlano.IsEnabled = false;

            if (StrNumeroDeOrden == "") return;

            EncOrd.NROORD_EOP = StrNumeroDeOrden;
            if (EncOrd.existe())
            {
                BooExisteElDato = true;
                BtnImprimirPlano.IsEnabled = true;

                YaEsta = true;
                EncOrd.consultar();
                dtpFecha.Text = EncOrd.FECORD_EOP.ToShortDateString();

                switch (EncOrd.TIPORD_EOP)
                {
                    case "P":
                        rbProduccion.IsChecked = true;
                        rbDevolucion.IsChecked = false;
                        rbReconocidos.IsChecked = false;
                        rbGarantia.IsChecked = false;
                        rbReparacion.IsChecked = false;
                        break;
                    case "D":
                        rbProduccion.IsChecked = false;
                        rbDevolucion.IsChecked = true;
                        rbReconocidos.IsChecked = false;
                        rbGarantia.IsChecked = false;
                        rbReparacion.IsChecked = false;
                        break;
                    case "N":
                        rbProduccion.IsChecked = false;
                        rbDevolucion.IsChecked = false;
                        rbReconocidos.IsChecked = true;
                        rbGarantia.IsChecked = false;
                        rbReparacion.IsChecked = false;
                        break;
                    case "G":
                        rbProduccion.IsChecked = false;
                        rbDevolucion.IsChecked = false;
                        rbReconocidos.IsChecked = false;
                        rbGarantia.IsChecked = true;
                        rbReparacion.IsChecked = false;
                        break;
                    case "R":
                        rbProduccion.IsChecked = false;
                        rbDevolucion.IsChecked = false;
                        rbReconocidos.IsChecked = false;
                        rbGarantia.IsChecked = false;
                        rbReparacion.IsChecked = true;
                        break;
                }
                if (EncOrd.ESTADO_EOP == "X")//FJRF - Si el estado de la orden es este hacemos lo siguiente
                {
                    TxbEstadoDeLaOrden.Text = "ELIMINADA";//FJRF - Informamos que esta eliminada
                }
                else
                {
                    TxbEstadoDeLaOrden.Text = "";//FJRF - Informamos que esta limpiamos el dato
                }
                

                txtCodCli.Text = EncOrd.CODCLI_EOP;
                MaeClip.CODCLI_CLI = txtCodCli.Text;
                MaeClip.consultar();
                txtNomCli.Text = MaeClip.NOMCLI_CLI;
                txtPedido.Text = EncOrd.NROPED_EOP.ToString();
                txtCodRef.Text = EncOrd.CODREF_EOP;
                MaeRef.CODREF_REF = txtCodRef.Text;
                MaeRef.Consultar();
                txtNomRef.Text = MaeRef.NOMREF_REF.Trim();

                PrivV_BuscarSubCliente(txtCodCli.Text);//FJRF - Se busca el sub cliente

                MaeCol.CODCOL_COL = EncOrd.CODCOL_EOP;
                MaeCol.Consultar();
                cbColor.Items.Clear();
                cbColor.Items.Add(MaeCol.CODCOL_COL + "-" + MaeCol.NOMCOL_COL.Trim());
                cbColor.SelectedIndex = 0;

                string strCodigoColor = "";//FJRF - Variable para cargar el codigo del color
                strCodigoColor = MdoGeneral.PasarCadenaYRetornarCodigoONombre(cbColor.Text, "-", "Codigo");//FJRF - Extraemos el codigo del color
                PonerImagen(MaeRef.CODREF_REF, strCodigoColor, txtNomRef.Text);//FJRF - Cargamos la imagen


                MaePro.CODREF_PRO = txtCodRef.Text;
                MaePro.CODCOL_PRO = MdoGeneral.PasarCadenaYRetornarCodigoONombre(cbColor.SelectedItem.ToString(), "-", "Codigo");
                DataTable dt = MaePro.BuscarTallas();

                #region FJRF - Tablas del informe: Estas region se usa para armar datos del informe
                dtEncabezadoTallas = new DataTable("DtbEncabezadoTallas");//FJRF - Creamos una nueva asignacion para borrar datos anteriores del encabezado de las tallas
                //Creamos las columnas que contendran las tallas
                dtEncabezadoTallas.Columns.Add("0", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla
                dtEncabezadoTallas.Columns.Add("1", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla
                dtEncabezadoTallas.Columns.Add("2", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla
                dtEncabezadoTallas.Columns.Add("3", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla
                dtEncabezadoTallas.Columns.Add("4", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla
                dtEncabezadoTallas.Columns.Add("5", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla
                dtEncabezadoTallas.Columns.Add("6", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla
                dtEncabezadoTallas.Columns.Add("7", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla
                dtEncabezadoTallas.Columns.Add("8", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla
                dtEncabezadoTallas.Columns.Add("9", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla
                dtEncabezadoTallas.Columns.Add("10", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla
                dtEncabezadoTallas.Columns.Add("11", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla

                drEncabezadoTallas = dtEncabezadoTallas.NewRow();//FJRF - Asignamos las columnas encabezado tallas

                //FJRF - Agregamos el total de las tallas
                int IntTotalTallas = 0;
                int IntCantidadTallas = 0;

                dtTotalTallas = new DataTable("DtbTotalTallas");//FJRF - Creamos una nueva asignacion para borrar datos anteriores del total de las tallas
                dtTotalTallas.Columns.Add("CantidadTallas", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra el total de las tallas
                dtTotalTallas.Columns.Add("TotalTallas", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra el total de las tallas

                drtotalTallas = dtTotalTallas.NewRow();//FJRF - Asignamos las columnas total tallas

                dtDetalleTallas = new DataTable("DtbDetalleTalla");//FJRF - Creamos una nueva asignacion para borrar datos anteriores del detalle de las tallas
                //Creamos las columnas que contendran las tallas
                dtDetalleTallas.Columns.Add("A0", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla
                dtDetalleTallas.Columns.Add("A1", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla
                dtDetalleTallas.Columns.Add("A2", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla
                dtDetalleTallas.Columns.Add("A3", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla
                dtDetalleTallas.Columns.Add("A4", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla
                dtDetalleTallas.Columns.Add("A5", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla
                dtDetalleTallas.Columns.Add("A6", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla
                dtDetalleTallas.Columns.Add("A7", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla
                dtDetalleTallas.Columns.Add("A8", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla
                dtDetalleTallas.Columns.Add("A9", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla
                dtDetalleTallas.Columns.Add("A10", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla
                dtDetalleTallas.Columns.Add("A11", System.Type.GetType("System.String"));//FJRF - Creamos la columna que tendra la talla

                drDetalleTallas = dtDetalleTallas.NewRow();//FJRF - Asignamos las columnas detalle tallas
                #endregion

                for (int j = 1; j < dt.Rows.Count + 1; j++)//FJRF - Se le agrega uno pues tiene un datos de mas que se le fue agregado
                {
                    dtOrd.Columns.Add(new DataColumn(dt.Rows[j - 1][0].ToString(), System.Type.GetType("System.Double")));

                    drEncabezadoTallas[j - 1] = dt.Rows[j - 1][0].ToString();//FJRF - Cargamos los datos en las columnas
                    IntCantidadTallas = IntCantidadTallas + 1;//FJRF - Sumamos cuantas tallas son
                }

                DetOrd.NROORD_DOP = StrNumeroDeOrden;
                DetOrd.CODREF_DOP = txtCodRef.Text;
                DetOrd.CODCOL_DOP = MdoGeneral.PasarCadenaYRetornarCodigoONombre(cbColor.SelectedItem.ToString(), "-", "Codigo");
                dgOrd.ItemsSource = null;
                dgOrd.ItemsSource = dtOrd.DefaultView;
                EncPrcp.NROORD_EPP = StrNumeroDeOrden;

                dtDetalle = EncPrcp.consCatPro();
                dgDetalle.ItemsSource = dtDetalle.DefaultView;

                for (int j = 1; j < dtOrd.Columns.Count; j++)
                {
                    DetOrd.CODTAL_DOP = dtOrd.Columns[j].Caption;
                    if (DetOrd.existe())
                    {
                        DetOrd.consultar();
                        dtOrd.Rows[0][j] = (DetOrd.CANORD_DOP - DetOrd.CANPRG_DOP);
                        dtOrd.Rows[2][j] = DetOrd.CANPRG_DOP;

                        drDetalleTallas[j - 1] = DetOrd.CANPRG_DOP;//FJRF - Cargamos los datos en las columnas
                        IntTotalTallas = IntTotalTallas + DetOrd.CANPRG_DOP;//FJRF - Sumamos las cantidades de las tallas


                        if (DetOrd.CANCOR_DOP > 0)
                        {
                            btnGrabar.IsEnabled = false;
                            btnEliminar.IsEnabled = false;
                        }
                        else
                        {
                            btnGrabar.IsEnabled = true;
                            btnEliminar.IsEnabled = true;
                        }
                        dtOrd.Rows[3][j] = DetOrd.CANCOR_DOP;

                        dtOrd.Rows[4][j] = DetOrd.CANPRP_DOP;

                        dtOrd.Rows[5][j] = DetOrd.CANGUA_DOP;
                        dtOrd.Rows[6][j] = DetOrd.CANMON_DOP;
                        dtOrd.Rows[7][j] = DetOrd.CANDES_DOP;

                    }
                }
                drtotalTallas["CantidadTallas"] = IntCantidadTallas;//FJRF - Se pone el total de las cantidad de tallas
                drtotalTallas["TotalTallas"] = IntTotalTallas;//FJRF - se pone la suma de la cantidad de las tallas

                dtEncabezadoTallas.Rows.Add(drEncabezadoTallas);//FJRF - Adicionamos los datos en la tabla
                dtDetalleTallas.Rows.Add(drDetalleTallas);//FJRF - Adicionamos los datos en la tabla
                dtTotalTallas.Rows.Add(drtotalTallas);//FJRF - Adicionamos los datos en la tabla
            }
        }
        private void dgOrd_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
        {
            
        }

        private void dgOrd_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
            int i=dgOrd.SelectedIndex;
            if (i==-1) return;
            if (i == 1) dgOrd.IsReadOnly = false;
        }

        private void cbColor_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (YaEsta) return;
            if (txtCodRef.Text=="") return;
            if (cbColor.SelectedItem == null) return;

            if (txtPedido.Text != "" && txtCodRef.Text.Length == 4 && cbColor.SelectedItem != null)
            {
                if (!DetPpcp.Existe(txtCodCli.Text, System.Convert.ToInt64(txtPedido.Text), txtCodRef.Text, MdoGeneral.PasarCadenaYRetornarCodigoONombre(cbColor.SelectedItem.ToString(),"-","Codigo"),""))
                {
                    MessageBox.Show("No existe la referencia para este pedido", "Órdenes", MessageBoxButton.OK, MessageBoxImage.Hand);
                    txtCodRef.Text = "";
                    return;
                }
            }

            MaePro.CODREF_PRO = txtCodRef.Text;
            MaePro.CODCOL_PRO = MdoGeneral.PasarCadenaYRetornarCodigoONombre(cbColor.SelectedItem.ToString(), "-", "Codigo");
            
            DataTable dt = MaePro.BuscarTallas();
            dt.Clear();
            for (int j = 1; j < dt.Rows.Count; j++)
            {
                dtOrd.Columns.Add(new DataColumn(dt.Rows[j - 1][0].ToString(), System.Type.GetType("System.Double")));
            }
            dgOrd.ItemsSource = null;
            dgOrd.ItemsSource = dtOrd.DefaultView;
            if (txtPedido.Text!="")
            {
                for (int j = 1; j < dtOrd.Columns.Count; j++)
                {
                    dtOrd.Rows[0][j] = DetPpcp.CantidadPedida(txtCodCli.Text, System.Convert.ToInt64(txtPedido.Text), txtCodRef.Text, MdoGeneral.PasarCadenaYRetornarCodigoONombre(cbColor.SelectedItem.ToString(),"-","Codigo"), dgOrd.Columns[j].Header.ToString());
                }
            }

            if (cbColor.Text == "" || cbColor.Text == null)
            {
 
            }
            else
            {
                cbColor.SelectedIndex = 0;
                string strCodigoColor = "";
                strCodigoColor = MdoGeneral.PasarCadenaYRetornarCodigoONombre(cbColor.Text, "-", "Codigo");
                PonerImagen(MaePro.CODREF_PRO, strCodigoColor, txtNomRef.Text);
            }
        }

        private void dgOrd_LostFocus(object sender, RoutedEventArgs e)
        {            
            int i = dgOrd.SelectedIndex;
            if (i == -1) return;
            if (dgOrd.CurrentCell.Column == null) return;
            int j = dgOrd.CurrentCell.Column.DisplayIndex;
            if (j == 0) return;
            if (i == 1)
            {
                dgOrd.IsReadOnly = false;
                if (txtPedido.Text != "")
                {
                    if (dtOrd.Rows[0][j].ToString() != "")
                    {
                        if (dtOrd.Rows[i][j].ToString() == "") dtOrd.Rows[i][j] = 0;
                        {
                            if (System.Convert.ToDouble(dtOrd.Rows[0][j].ToString()) < System.Convert.ToDouble(dtOrd.Rows[i][j].ToString()))
                            {
                                MessageBox.Show("La cantidad por programar es menor que la cantidad ingresada!", "Órdenes", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                                dtOrd.Rows[i][j] = 0;
                                return;
                            }
                        }
                    }
                }
            }
            else
            {
                dgOrd.IsReadOnly = true;
            }
        }

        private void dgOrd_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            int i = dgOrd.SelectedIndex;
            if (i == -1) return;
            if (i == 1)                
                dgOrd.IsReadOnly = false;
            else
                dgOrd.IsReadOnly = true;
        }

        private void dgOrd_GotFocus(object sender, RoutedEventArgs e)
        {
            int i = dgOrd.SelectedIndex;
            if (i == -1) return;
            if (i == 1)
                dgOrd.IsReadOnly = false;
            else
                dgOrd.IsReadOnly = true;
        }

        private void Window_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {

            //if (e.Key == Key.Enter)
            //{
            //    KeyEventArgs e1 = new KeyEventArgs(Keyboard.PrimaryDevice, Keyboard.PrimaryDevice.ActiveSource,
            //                     0, Key.Tab);
            //    e1.RoutedEvent = Keyboard.KeyDownEvent;
            //    InputManager.Current.ProcessInput(e1);
            //}
        }

        private void btnEliminar_Click(object sender, RoutedEventArgs e)
        {
            if (MessageBox.Show("Realmente desea eliminar la orden?", "Órdenes", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
            {
                EncOrd.NROORD_EOP = txtOrden.Text;
                EncOrd.eliminar();
                LimpiarControles();
                txtOrden.Text = "";
            }
        }

        private void dgOrd_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.Enter && elemento != null)
            {
                e.Handled = true;
                elemento.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
            }
        }

        private void dgDetalle_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.Enter && elemento != null)
            {
                e.Handled = true;
                elemento.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
            }
        }

        private void PrivV_ImprimirInformeEnCrystalReport()
        {
            try
            {
                if (BooExisteElDato == true)
                {
                    #region CreamosLasColmnasDelEncabezado
                    //FJRF - Creamos la tabla que contendra el encabezado del informe
                    DataTable dtEncabezado = new DataTable("DtbEncabezado");
                    //FJRF - CLIENTE
                    dtEncabezado.Columns.Add("ClienteCodigo", System.Type.GetType("System.String"));
                    dtEncabezado.Columns.Add("ClienteNombre", System.Type.GetType("System.String"));
                    //FJRF - SUBCLIENTE
                    dtEncabezado.Columns.Add("SubClienteCodigo", System.Type.GetType("System.String"));
                    dtEncabezado.Columns.Add("SubClienteNombre", System.Type.GetType("System.String"));
                    //FJRF - REFERENCIA
                    dtEncabezado.Columns.Add("ReferenciaCodigo", System.Type.GetType("System.String"));
                    dtEncabezado.Columns.Add("ReferenciaNombre", System.Type.GetType("System.String"));
                    //FJRF - COLOR
                    dtEncabezado.Columns.Add("ColorCodigo", System.Type.GetType("System.String"));
                    dtEncabezado.Columns.Add("ColorNombre", System.Type.GetType("System.String"));
                    //FJRF - ORDEN Y FECHA
                    dtEncabezado.Columns.Add("CodigoBarrasOrden", System.Type.GetType("System.String"));
                    dtEncabezado.Columns.Add("Fecha", System.Type.GetType("System.String"));
                    //FJRF - PEDIDO
                    dtEncabezado.Columns.Add("Pedido", System.Type.GetType("System.String"));

                    dtEncabezado.Columns.Add("Horma", System.Type.GetType("System.String"));
                    dtEncabezado.Columns.Add("TroquelTrompa", System.Type.GetType("System.String"));
                    dtEncabezado.Columns.Add("TroquelContraF", System.Type.GetType("System.String"));
                    dtEncabezado.Columns.Add("TroquelForrP", System.Type.GetType("System.String"));
                    #endregion

                    #region AsignamosEnLasColmnasDelEncabezadoLosValores
                    //FJRF - Asignamos los valores al encabezado
                    DataRow drEncabezado;
                    drEncabezado = dtEncabezado.NewRow();

                    //FJRF - CLIENTE
                    drEncabezado["ClienteCodigo"] = txtCodCli.Text.Trim().ToUpper();
                    drEncabezado["ClienteNombre"] = txtNomCli.Text.Trim().ToUpper();
                    //FJRF - SUBCLIENTE
                    drEncabezado["SubClienteCodigo"] = StrSubClienteCodigo;
                    drEncabezado["SubClienteNombre"] = StrSubClienteNombre;
                    //FJRF - REFERENCIA
                    drEncabezado["ReferenciaCodigo"] = txtCodRef.Text.Trim().ToUpper();
                    drEncabezado["ReferenciaNombre"] = txtNomRef.Text.Trim().ToUpper();
                    //FJRF - COLOR
                    drEncabezado["ColorCodigo"] = MdoGeneral.PasarCadenaYRetornarCodigoONombre(cbColor.Text, "-", "Codigo");
                    drEncabezado["ColorNombre"] = MdoGeneral.PasarCadenaYRetornarCodigoONombre(cbColor.Text, "-", "Nombre"); ;
                    //FJRF - ORDEN Y FECHA
                    DateTime DtFecha = dtpFecha.SelectedDate.Value;
                    drEncabezado["Fecha"] = String.Format("{0:dd/MM/yyyy}", DtFecha);
                    drEncabezado["CodigoBarrasOrden"] = "*" + txtOrden.Text.Trim() + "*";
                    //FJRF - PEDIDO
                    drEncabezado["Pedido"] = txtPedido.Text.Trim();

                    MaeRefp.CODREF_REF = txtCodRef.Text.Trim().ToUpper();
                    MaeRefp.consultar();
                    if (MaeRefp.EXISTE)
                    {
                        drEncabezado["Horma"] = MaeRefp.HORMA_REF;
                        drEncabezado["TroquelTrompa"] = MaeRefp.TRQTROMPA_REF;
                        drEncabezado["TroquelContraF"] = MaeRefp.TRQCONTRA_REF;
                        drEncabezado["TroquelForrP"] = MaeRefp.TRQFORROPLAN_REF;
                    }
                    else
                    {
                        drEncabezado["Horma"] = "";
                        drEncabezado["TroquelTrompa"] = "";
                        drEncabezado["TroquelContraF"] = "";
                        drEncabezado["TroquelForrP"] ="";
                    }
                    dtEncabezado.Rows.Add(drEncabezado);

                    EjecutarSp_ImpOrd(txtOrden.Text.Trim(), 2);//FJRF - Ejecutamos el sp con el numero de la orden
                    #endregion

                    #region AdicionamosLasTablasQueSeUtilizaranEnElInforme
                    
                    DataSet ds = new DataSet("DsAdministrarOrdenes");

                    ds.Tables.Add(dtEncabezado);//Encabezado Informe
                    ds.Tables.Add(dtEncabezadoTallas);//Tabla de tallas encabezado
                    ds.Tables.Add(dtDetalleTallas);//Tabla de tallas detalle
                    ds.Tables.Add(dtTotalTallas);//Tabla de totales de las tallas
                    ds.Tables.Add(dtDetalleMateriasPrimas);//Tabla de los materiales entregados
                    ds.Tables.Add(dtCortadoresOrdenProduccion);//Tabla de los cortadores asignados
                    
                    #endregion

                    //produccion.reportes.Vista vista = new produccion.reportes.Vista { ds = ds, reporte = @"reportes\rptInformeAdministrarOrdenes.rpt" };
                    produccion.reportes.Vista vista = new produccion.reportes.Vista { ds = ds, reporte = @"reportes\rptInformeAdministrarOrdenes.rpt" };

                    vista.Show();
                }
                else
                {

                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void BtnImprimirPlano_Click(object sender, RoutedEventArgs e)
        {
            PubV_ImprimirOrden(txtOrden.Text.Trim(), 1);//FJRF - Imprimirmos los datos
        }

        public void PubV_ImprimirOrden(String StrNumeroOrden, int IntCantidadDeHojasAImprimir)
        {
            //FJRF - Creamos las variables que necesitamos para el informe
            string StrComandoDado, StrRutaPlano, StrNombreDocumento, StrRutaImpresionLPT2, StrLineaAEjecutar;
            
            MDOgeneral.strImprimirNoCopias = "";//FJRF - Limpiamos para que no quede con datos 
            try
            {
                if (MDOgeneral.strImpresionLPT2 == "" || MDOgeneral.strImpresionLPT2 == null)
                {
                    PrivV_ImprimirInformeEnCrystalReport();
                }
                else
                {
                    if (BooExisteElDato == true)//FJRF - Si al digitar una orden esta existe hacer lo siguiente
                    {
                        EjecutarSp_ImpOrd(StrNumeroOrden, IntCantidadDeHojasAImprimir);//FJRF - Ejecutamos el sp con el numero de la orden

                        StrComandoDado = "COPY";//FJRF - Enviamos el comando que vamos a ejecutar
                        StrRutaPlano = MDOgeneral.strRutaImpresionDocumentos.ToUpper();//FJRF - Cargamos la ruta del archivo plano donde la deja el sp
                        StrNombreDocumento = "ORD" + StrNumeroOrden.Trim() + ".ORP";//FJRF - Armamos el nombre del documento
                        StrRutaImpresionLPT2 = MDOgeneral.strImpresionLPT2;//FJRF - Enviamos la ruta de impresion -  esto es como decir (@"\\frar01\epson_javier")

                        StrLineaAEjecutar = StrComandoDado + " " + StrRutaPlano + StrNombreDocumento + " " + StrRutaImpresionLPT2;//FJRF - Armamos la linea de comando a ejecutar
                        
                        StrLineaAEjecutarEnCmd = StrLineaAEjecutar;
                        DamosTiempoParaImpresionYEjecutamos(4);//FJRF - El proceso se ejecuta ocho segundos despues
                    }
                    else//FJRF - Si la orden no existe hacer lo siguiente
                    {

                    }
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();//FJRF - Creamos un manejador de tiempo
        private void DamosTiempoParaImpresionYEjecutamos(int IntSegundos)
        {
            dispatcherTimer = new System.Windows.Threading.DispatcherTimer();//FJRF - Creamos un nuevo elemento de manejador de tiempo

            dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);//FJRF - Decimos el evento que lo ejecutara
            dispatcherTimer.Interval = new TimeSpan(0, 0, IntSegundos);//FJRF - Decimos el tiempo de espera
            dispatcherTimer.Start();//FJRF - Inicializamos el proceso
        }
        private void dispatcherTimer_Tick(object sender, EventArgs e)
        {
            EjecutarComando(StrLineaAEjecutarEnCmd);//FJRF - Ejecutamos el comando dado en la linea

            dispatcherTimer.Stop();//FJRF - Detenemos el temporizador para que no se siga ejecutando
            dispatcherTimer = null;//FJRF - Lo volvemos null o no se detendra
        }

        private void EjecutarComando(string StrComando)//FJRF - Este procedimiento ejecuta un comando en dos (CMD)
        {
            System.Diagnostics.Process proc = new System.Diagnostics.Process();
            proc.EnableRaisingEvents = false;
            proc.StartInfo.FileName = "cmd";
            proc.StartInfo.RedirectStandardInput = true;
            proc.StartInfo.RedirectStandardOutput = true;
            proc.StartInfo.CreateNoWindow = true;
            proc.StartInfo.UseShellExecute = false;
            proc.Start();
            proc.StandardInput.WriteLine(StrComando);
            proc.StandardInput.Flush();
            proc.StandardInput.Close();
            proc.Close();
        }
        private void EjecutarSp_ImpOrd(string StrCodigoOrden, int IntCantidadCopiasAImprimir)//FJRF - Este procedimiento ejecuta un sp
        {
            try
            {
                MDOgeneral.spComando.CommandText = "SP_IMPORD";
                MDOgeneral.spComando.Connection = MDOgeneral.conexion;
                MDOgeneral.spComando.CommandType = CommandType.StoredProcedure;
                MDOgeneral.spComando.Parameters.Clear();

                //Input
                MDOgeneral.spComando.Parameters.Add("pva_nroord", Oracle.DataAccess.Client.OracleDbType.Varchar2, 40).Value = String.IsNullOrEmpty(StrCodigoOrden) ? "   " : StrCodigoOrden;
                MDOgeneral.spComando.Parameters.Add("pva_veces", Oracle.DataAccess.Client.OracleDbType.Varchar2, 40).Value = IntCantidadCopiasAImprimir;

                //Output salidas
                MDOgeneral.spComando.Parameters.Add("pva_result", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                MDOgeneral.spComando.Parameters.Add("pva_errusu", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                MDOgeneral.spComando.ExecuteNonQuery();

                dtDetalleMateriasPrimas =  mod.consulta("select * from TMPIMPORD");
                dtCortadoresOrdenProduccion = mod.consulta("SELECT * FROM VIS_ORDPRO_NOMCOR WHERE NumeroOrden = '" + StrCodigoOrden + "'");
            }
            catch (Exception ex) { throw ex; }
        }

        private void txtPedido_TextChanged(object sender, TextChangedEventArgs e)
        {

        }

        private void txtPedido_PreviewTextInput(object sender, TextCompositionEventArgs e)
        {
            int ascci = Convert.ToInt32(Convert.ToChar(e.Text));
            if (ascci >= 48 && ascci <= 57) e.Handled = false;
            else e.Handled = true;
        }

        #region FJRF - PonerFoto

        private void PonerImagen(string strCodigoReferencia, string strCodigoColor, string strNombreReferencia)
        {
            if (String.IsNullOrEmpty(strCodigoColor))
            {
                BitmapImage b = new BitmapImage();
                if (File.Exists(MDOgeneral.Fotos_BOSI + strCodigoReferencia + ".jpg"))
                {
                    b.BeginInit();
                    b.UriSource = new Uri(MDOgeneral.Fotos_BOSI + strCodigoReferencia + ".jpg");
                    b.EndInit();
                    imgFoto.Stretch = Stretch.Fill;
                    imgFoto.Source = b;
                    ImagenTooltip.Source = b;
                    txbNombreImagen.Text = strNombreReferencia;
                }
                else
                {
                    imgFoto.Source = null;
                }
            }
            else
            {
                BitmapImage b = new BitmapImage();
                if (File.Exists(MDOgeneral.Fotos_BOSI + strCodigoReferencia + strCodigoColor + ".jpg"))
                {
                    b.BeginInit();
                    b.UriSource = new Uri(MDOgeneral.Fotos_BOSI + strCodigoReferencia + strCodigoColor + ".jpg");
                    b.EndInit();
                    imgFoto.Stretch = Stretch.Fill;
                    imgFoto.Source = b;
                    ImagenTooltip.Source = b;
                    txbNombreImagen.Text = strNombreReferencia;
                }
                else
                {
                    if (File.Exists(MDOgeneral.Fotos_BOSI + strCodigoReferencia + StrCodigoPrimerColorReferencia + ".jpg"))
                    {
                        b.BeginInit();
                        b.UriSource = new Uri(MDOgeneral.Fotos_BOSI + strCodigoReferencia + StrCodigoPrimerColorReferencia + ".jpg");
                        b.EndInit();
                        imgFoto.Stretch = Stretch.Fill;
                        imgFoto.Source = b;
                        ImagenTooltip.Source = b;
                        txbNombreImagen.Text = strNombreReferencia;
                    }
                    else
                    {
                        Boolean BooExiste = false;
                        //Foto para cualquier color-Consultar colores para referencia
                        clases.CLSMAEPRO mae = new clases.CLSMAEPRO { CODREF_PRO = strCodigoReferencia };
                        DataTable val = mae.BuscarColor();

                        foreach (DataRow r in val.Rows)
                        {
                            if (!String.IsNullOrEmpty(r["Codigo"].ToString()))
                            {
                                string StrRuta = MDOgeneral.Fotos_BOSI + strCodigoReferencia + r["Codigo"].ToString() + ".jpg";
                                if (File.Exists(StrRuta))
                                {

                                    BitmapImage BitFoto = new BitmapImage();
                                    BitFoto.BeginInit();
                                    BitFoto.UriSource = new Uri(StrRuta);
                                    BitFoto.EndInit();
                                    imgFoto.Source = BitFoto;
                                    ImagenTooltip.Source = BitFoto;
                                    txbNombreImagen.Text = strNombreReferencia;

                                    BooExiste = true;

                                    break;//FJRF - Si la encontro nos salimos
                                }
                            }
                        }

                        if (BooExiste == false)
                        {
                            imgFoto.Source = null;
                        }
                    }
                }
            }
        }

        #endregion

        private void dgOrd_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
        {
            if (e.Column.Header.ToString() == "Seccion-Pedido")
            {
                // e.Cancel = true;   // For not to include 
                e.Column.IsReadOnly = true;
            }
        }

        private void dgDetalle_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
        {
            e.Column.IsReadOnly = true;
        }

        private void rbProduccion_Checked(object sender, RoutedEventArgs e)
        {
            
            if (rbProduccion.IsChecked == true && YaEsta== false)
            {
                txtOrden.Text = EncOrd.Consecutivo("P");
            }

        }

        private void rbReparacion_Checked(object sender, RoutedEventArgs e)
        {

            if (rbReparacion.IsChecked == true && YaEsta == false)
            {
                txtOrden.Text = EncOrd.Consecutivo("R");
            }
        }

        private void rbDevolucion_Checked(object sender, RoutedEventArgs e)
        {

            if (rbDevolucion.IsChecked == true && YaEsta == false)
            {
                txtOrden.Text = EncOrd.Consecutivo("D");
            }

        }

        private void rbReconocidos_Checked(object sender, RoutedEventArgs e)
        {

            if (rbReconocidos.IsChecked == true && YaEsta == false)
            {
                txtOrden.Text = EncOrd.Consecutivo("C");
            }

        }

        private void rbGarantia_Checked(object sender, RoutedEventArgs e)
        {

            if (rbGarantia.IsChecked == true && YaEsta == false)
            {
                txtOrden.Text = EncOrd.Consecutivo("G");
            }

        }

        private void imgFoto_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            //Para llamar el PDF de la ficha tecnica de la referencia
            if (File.Exists(MDOgeneral.Fotos_BOSI + txtCodRef.Text.Trim() + ".PDF"))
            {
                //MessageBox.Show("Si existe la ficha tecnica", "Confirmación", MessageBoxButton.OK, MessageBoxImage.Hand, MessageBoxResult.OK);
                String fileName = MDOgeneral.Fotos_BOSI + txtCodRef.Text.Trim() + ".PDF";
                System.Diagnostics.Process process = new System.Diagnostics.Process();
                process.StartInfo.FileName = fileName;
                process.Start();
            }
            else
            {
                MessageBox.Show("No existe la ficha tecnica", "Confirmación", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
            }
        }

    }
}

